/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.sadhar.sipp.rencanaanggaranpendapatanuangujiantugasakhirkuliahkerjanyatawisuda;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.sadhar.sia.common.ClassConnection;

/**
 *
 * @author kris
 */
public class RencanaAnggaranPendapatanUKWImpl implements RencanaAnggaranPendapatanUKWDAO {

    public RencanaAnggaranPendapatanUKWImpl() {
        ClassConnection.getTransactionProxyFactoryBean().setTarget(this);
    }

    public List<Map> getPosPendapatan() throws Exception {
        String sql = "select * from ppmk.posPendapatan WHERE idPosPendapatan=6 or " +
                " idPosPendapatan=7 or idPosPendapatan=9";
        List<Map> maps = ClassConnection.getJdbc().queryForList(sql);
        return maps;
    }

    public List<Map> getUnitKerja(String tahun, int idPosPendapatan) throws Exception {
        String sql = "select un.Nama_unit_kerja,un.idUnitKerja,ap.idPosAnggaranPendapatanUnit," +
                " ap.tahunAnggaran,ap.idPosPendapatan " +
                " from ppmk.posAnggaranPendapatanUnit as ap " +
                " inner join kamus.unkerja as un on ap.kodeUnitKerja=un.Kd_unit_kerja " +
                " where idPosPendapatan=? " +
                " AND tahunAnggaran=? ";
        List<Map> maps = ClassConnection.getJdbc().queryForList(sql, new Object[]{idPosPendapatan, tahun});
        return maps;
    }

    public List<Map> getAnggaranPendapatanUjianAkhirKKN(String tahun, int idPosPendapatan) throws Exception {
        String sql = "SELECT * FROM " +
                " ppmk.anggaranPendapatanUjianAkhirKKN," +
                " ppmk.posAnggaranPendapatanUnit," +
                " ppmk.posPendapatan," +
                " kamus.unkerja " +
                " where" +
                " ppmk.posAnggaranPendapatanUnit.idPosAnggaranPendapatanUnit = ppmk.anggaranPendapatanUjianAkhirKKN.idPosAnggaranPendapatanUnit " +
                " and ppmk.anggaranPendapatanUjianAkhirKKN.tahunAnggaran=? AND" +
                " ppmk.posPendapatan.idPosPendapatan = ? and ppmk.posAnggaranPendapatanUnit.idPosPendapatan = ppmk.posPendapatan.idPosPendapatan " +
                " and kamus.unkerja.Kd_unit_kerja = ppmk.posAnggaranPendapatanUnit.kodeUnitKerja";
        List<Map> map = ClassConnection.getJdbc().queryForList(sql, new Object[]{tahun, idPosPendapatan});
        return map;
    }

    public Integer getTotalAnggaran(String tahun, int idPosPendapatan) {
        String sql = "Select SUM(prediksiJmlMhsYgUjian*tarif*(prosentase/100)) from ppmk.anggaranPendapatanUjianAkhirKKN" +
                " where tahunAnggaran=? AND idPosAnggaranPendapatanUnit=?";
        Integer result = ClassConnection.getJdbc().queryForInt(sql, new Object[]{tahun, idPosPendapatan});
        return result;
    }

    public void update(RencanaAnggaranPendapatanUKW rencanaAnggaranPendapatanUKW) throws Exception {
        String sql = "UPDATE ppmk.anggaranPendapatanUjianAkhirKKN set periode=?,prediksiJmlMhsYgUjian=?,tarif=?,prosentase=?  " +
                " WHERE idPosAnggaranPendapatanUnit=?";
        ClassConnection.getJdbc().update(sql, new Object[]{
                    rencanaAnggaranPendapatanUKW.getPeriode(),
                    rencanaAnggaranPendapatanUKW.getPrediksiJmlYgUjian(),
                    rencanaAnggaranPendapatanUKW.getTarif(),
                    rencanaAnggaranPendapatanUKW.getProsentase(),
                    rencanaAnggaranPendapatanUKW.getIdPosAnggaranPendapatanUnit()
                });
    }

    @Override
    public void insert(RencanaAnggaranPendapatanUKW rencanaAnggaranPendapatanUKW) throws Exception {
        String sql = "insert into ppmk.anggaranPendapatanUjianAkhirKKN" +
                " (idPosAnggaranPendapatanUnit,periode,prediksiJmlMhsYgUjian,tarif,prosentase,tahunAnggaran)" +
                " values(?,?,?,?,?,?)  ";

        ClassConnection.getJdbc().update(sql, new Object[]{
                    rencanaAnggaranPendapatanUKW.getIdPosAnggaranPendapatanUnit(),
                    rencanaAnggaranPendapatanUKW.getPeriode(),
                    rencanaAnggaranPendapatanUKW.getPrediksiJmlYgUjian(),
                    rencanaAnggaranPendapatanUKW.getTarif(),
                    rencanaAnggaranPendapatanUKW.getProsentase(),
                    rencanaAnggaranPendapatanUKW.getTahunAnggaran()
                });
    }

    @Override
    public Map getAnggaranPendapatanUjianAkhirKKN(String tahun, int idPosPendapatan, int idPosAnggaranPendapatan) throws Exception {
        String sql = "SELECT * FROM " +
                " ppmk.anggaranPendapatanUjianAkhirKKN," +
                " ppmk.posAnggaranPendapatanUnit," +
                " ppmk.posPendapatan," +
                " kamus.unkerja " +
                " where" +
                " ppmk.posAnggaranPendapatanUnit.idPosAnggaranPendapatanUnit = ppmk.anggaranPendapatanUjianAkhirKKN.idPosAnggaranPendapatanUnit " +
                " and ppmk.anggaranPendapatanUjianAkhirKKN.tahunAnggaran=? AND" +
                " ppmk.posPendapatan.idPosPendapatan = ? " +
                " AND ppmk.posAnggaranPendapatanUnit.idPosAnggaranPendapatanUnit= ? and ppmk.posAnggaranPendapatanUnit.idPosPendapatan = ppmk.posPendapatan.idPosPendapatan " +
                " and kamus.unkerja.Kd_unit_kerja = ppmk.posAnggaranPendapatanUnit.kodeUnitKerja";
        List<Map> result = ClassConnection.getJdbc().queryForList(sql, new Object[]{tahun, idPosPendapatan, idPosAnggaranPendapatan});

        Map map = new HashMap();
        for (Map m : result) {
            map = m;
        }
        return map;
    }

    @Override
    public void delete(int idPosAnggaranPendapatanUnit, String tahun) throws Exception {
        String sql = "delete from  ppmk.anggaranPendapatanUjianAkhirKKN " +
                " where idPosAnggaranPendapatanUnit=? ";
        ClassConnection.getJdbc().update(sql, new Object[]{idPosAnggaranPendapatanUnit});
    }
}
